import { IButtonMenu, IDomEditor } from '@wangeditor/editor'
import { SlateEditor, SlateElement, SlateNode } from '@wangeditor/editor'
import putBuffer from '@/api/API_Uploading_Directory_Tree'
import eventbus from '@/eventBus/eventbus'
// class MyButtonMenu implements IButtonMenu {   // TS 语法
export class MyButtonMenu {
  // JS 语法

  constructor() {
    this.title = '从oss删除图片视频' // 自定义菜单标题
    // this.iconSvg = '<svg>...</svg>' // 可选
    this.tag = 'button'
  }

  // 获取菜单执行时的 value ，用不到则返回空 字符串或 false
  // getValue(editor: IDomEditor): string | boolean {   // TS 语法
  getValue(editor) {
    // JS 语法
    return ''
  }

  // 菜单是否需要激活（如选中加粗文本，“加粗”菜单会激活），用不到则返回 false
  // isActive(editor: IDomEditor): boolean {  // TS 语法
  isActive(editor) {
    // JS 语法
    return false
  }

  // 菜单是否需要禁用（如选中 H1 ，“引用”菜单被禁用），用不到则返回 false
  // isDisabled(editor: IDomEditor): boolean {   // TS 语法
  isDisabled(editor) {
    // JS 语法
    return false
  }

  // 点击菜单时触发的函数
  // exec(editor: IDomEditor, value: string | boolean) {   // TS 语法
  async exec(editor, value) {
    // JS 语法
    if (this.isDisabled(editor)) return
    const nodeEntries = SlateEditor.nodes(editor, {
      match: (node) => {
        // JS syntax
        if (SlateElement.isElement(node)) {
          if (node.type === 'image' || node.type === 'video') {
            return true // 匹配
          }
        }
        return false
      },
      universal: true
    })

    if (nodeEntries == null) {
      console.log('当前未选中')
    } else {
      for (let nodeEntry of nodeEntries) {
        const [node, path] = nodeEntry
        try {
          var src = decodeURIComponent(node.src)
        } catch (e) {
          var src = decodeURIComponent(node.url)
        }

        let bu_path = src.split('/').slice(3).join('/')
        console.log(bu_path)
        let { ok, err } = await putBuffer('del', bu_path)
        if (ok) {
          alert('删除成功')
          editor.deleteFragment()
          editor.deleteBackward()
        } else {
          alert(err)
        }
        // console.log('选中了  节点', node)
        // console.log('节点 path 是', path)
      }
    }
  }
}

// 